Merge branch 'dev' of https://github.com/Microsoft/WindowsTemplateStudio into dev
|
@ -10,14 +10,26 @@ Param(
|
|||
[string]$vsixDisplayName,
|
||||
|
||||
[Parameter(Mandatory=$True,Position=4)]
|
||||
[string]$buildNumber
|
||||
[string]$buildNumber,
|
||||
|
||||
[Parameter(Mandatory=$False,Position=3)]
|
||||
[string]$publicKeyToken = "e4ef4cc7a47ae0c5" #TestKey.snk
|
||||
)
|
||||
|
||||
$VersionRegex = "(\d+)\.(\d+)\.(\d+)\.(\d+)"
|
||||
|
||||
if($buildNumber -match $VersionRegEx){
|
||||
$dateFromBuildNumber = [DateTime]::Now;
|
||||
[DateTime]::TryParseExact($matches[3],"yyyyMMdd",
|
||||
[System.Globalization.CultureInfo]::InvariantCulture,
|
||||
[System.Globalization.DateTimeStyles]::None,
|
||||
[ref]$dateFromBuildNumber)
|
||||
|
||||
$versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + [int]::Parse($matches[3]).ToString() + "." + [int]::Parse($matches[4]).ToString()
|
||||
Write-Output "Parsed Date From Build: $dateFromBuildNumber"
|
||||
|
||||
$buildDifferentiator =($dateFromBuildNumber.Year - 2000) * 1000 + $dateFromBuildNumber.DayOfYear
|
||||
|
||||
$versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + $buildDifferentiator.ToString() + "." + [int]::Parse($matches[4]).ToString()
|
||||
Write-Host "Version Number" $versionNumber
|
||||
|
||||
}
|
||||
|
@ -44,24 +56,56 @@ else{
|
|||
throw "Identity is mandatory."
|
||||
}
|
||||
|
||||
## APPLY VERSION TO ASSEMBLY FILES
|
||||
## APPLY VERSION TO ASSEMBLY FILES (AssemblyVersion and AssemblyFileVersion)
|
||||
Write-Host "Applying version to AssemblyInfo Files in matching the path pattern '$codePathPattern'"
|
||||
$files = Get-ChildItem -include "*AssemblyInfo.cs" -Recurse | Where-Object{ $_.FullName -notmatch "\\Templates\\" }
|
||||
if($files)
|
||||
{
|
||||
Write-Host "Will apply $versionNumber to $($files.count) files."
|
||||
|
||||
$assemblyFileVersionRegEx = "AssemblyFileVersion\(""(\d+)\.(\d+)\.(\d+)\.(\d+)""\)"
|
||||
$assemblyFileVersionReplacement = "AssemblyFileVersion(""$versionNumber"")"
|
||||
$assemblyVersionRegEx = "\(""$VersionRegex""\)"
|
||||
$assemblyVersionReplacement = "(""$versionNumber"")"
|
||||
|
||||
foreach ($file in $files) {
|
||||
$filecontent = Get-Content($file)
|
||||
attrib $file -r
|
||||
$filecontent -replace $assemblyFileVersionRegEx, $assemblyFileVersionReplacement | Out-File $file utf8
|
||||
$filecontent -replace $assemblyVersionRegEx, $assemblyVersionReplacement | Out-File $file utf8
|
||||
Write-Host "$file - version applied"
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Warning "No files found to apply version."
|
||||
}
|
||||
|
||||
## APPLY VERSION TO PROJECT TEMPLATE WIZARD REFERENCE
|
||||
if($publicKeyToken){
|
||||
Write-Host "Setting Wizard Extension configuration in Project Template"
|
||||
$projectTemplate = Get-ChildItem -include "*.vstemplate" -recurse | Where-Object{
|
||||
$_.FullName -notmatch "\\Templates\\" -and
|
||||
$_.FullName -notmatch "\\debug\\" -and
|
||||
$_.FullName -notmatch "\\obj\\" -and
|
||||
$_.FullName -match "\\ProjectTemplates\\"
|
||||
}
|
||||
if($projectTemplate){
|
||||
|
||||
|
||||
[xml]$projectTemplateContent = Get-Content $projectTemplate
|
||||
|
||||
$newPublicKeyToken = "PublicKeyToken=$publicKeyToken"
|
||||
$wizardAssemblyStrongName = $projectTemplateContent.VSTemplate.WizardExtension.Assembly -replace $VersionRegEx, $versionNumber
|
||||
$wizardAssemblyStrongName = $wizardAssemblyStrongName -replace "PublicKeyToken=.*</Assembly>", "$newPublicKeyToken</Assembly>"
|
||||
|
||||
$projectTemplateContent.VSTemplate.WizardExtension.Assembly = $wizardAssemblyStrongName
|
||||
|
||||
$projectTemplateContent.Save($projectTemplate)
|
||||
|
||||
Write-Host "$projectTemplate - Wizard Assembly Strong Name updated ($wizardAssemblyStrongName)"
|
||||
}
|
||||
else{
|
||||
throw "No Project Template manifest file found!"
|
||||
}
|
||||
}
|
||||
else{
|
||||
throw "Public key token not set."
|
||||
}
|
|
@ -44,15 +44,20 @@ namespace Microsoft.Templates.Core
|
|||
string result = String.Empty;
|
||||
foreach(var mp in Instance?.Settings.SettingsLoader.MountPoints)
|
||||
{
|
||||
if (Directory.Exists(mp.Place))
|
||||
if (Directory.Exists(mp.Place) && IsHigherVersion(result, mp.Place))
|
||||
{
|
||||
//TODO RAGC: ENSURE EXITSI AND THE VERSION IS HIGHER!!!!
|
||||
result = mp.Place;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private bool IsHigherVersion(string currentPlace, string newPlace)
|
||||
{
|
||||
Version.TryParse(currentPlace, out Version current);
|
||||
Version.TryParse(Path.GetFileName(newPlace), out Version newp);
|
||||
return newp > current;
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
public sealed partial class uct.ItemNamePage : Page
|
||||
{
|
||||
private uct.ItemNameViewModel ViewModel { get { return DataContext as uct.ItemNameViewModel; } }
|
||||
//{[{
|
||||
private uct.ItemNameViewModel ViewModel
|
||||
{
|
||||
get { return DataContext as uct.ItemNameViewModel; }
|
||||
}
|
||||
|
||||
//}]}
|
||||
}
|
||||
|
|
|
@ -29,47 +29,11 @@
|
|||
"path": ".\\MasterDetailPage\\MasterDetailPageViewModel.cs"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\DessertModel.cs"
|
||||
"path": ".\\MasterDetailPage\\SampleModel.cs"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\DessertService.cs"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60Banana.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60Lemon.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60Mint.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60Orange.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60SauceCaramel.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60SauceChocolate.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60SauceStrawberry.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60SprinklesChocolate.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60SprinklesRainbow.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60SprinklesVanilla.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60Strawberry.png"
|
||||
},
|
||||
{
|
||||
"path": ".\\MasterDetailPage\\Images\\60Vanilla.png"
|
||||
}
|
||||
"path": ".\\MasterDetailPage\\SampleModelService.cs"
|
||||
}
|
||||
],
|
||||
"symbols": {
|
||||
"rootNamespace": {
|
||||
|
|
|
@ -1,192 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ItemNamespace.MasterDetailPage
|
||||
{
|
||||
public class DessertService
|
||||
{
|
||||
public async Task<IEnumerable<DessertModel>> GetDataAsync()
|
||||
{
|
||||
await Task.Delay(0);
|
||||
|
||||
var data = new List<DessertModel>();
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Banana Blast Frozen Yogurt",
|
||||
Subtitle = "Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Banana.png",
|
||||
Link = "http://www.adatum.com/",
|
||||
Category = "Low-fat frozen yogurt",
|
||||
Description = "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat",
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Lavish Lemon Ice",
|
||||
Subtitle = "Quisque vivamus bibendum cursus dictum dictumst dis aliquam aliquet etiam lectus eleifend fusce libero ante facilisi ligula est",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Lemon.png",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Sorbet",
|
||||
Description = "Enim cursus nascetur dictum habitasse hendrerit nec gravida vestibulum pellentesque vestibulum adipiscing iaculis erat consectetuer pellentesque parturient lacinia himenaeos pharetra condimentum non sollicitudin eros dolor vestibulum per lectus pellentesque nibh imperdiet laoreet consectetuer placerat libero malesuada pellentesque fames penatibus ligula scelerisque litora nisi luctus vestibulum nisl ullamcorper sed sem natoque suspendisse felis sit condimentum pulvinar nunc posuere magnis vel scelerisque sagittis porttitor potenti tincidunt mattis ipsum adipiscing sollicitudin parturient mauris nam senectus ullamcorper mollis tristique sociosqu suspendisse ultricies montes sed condimentum dis nostra suscipit justo ornare pretium odio pellentesque lacus lorem torquent orci",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Marvelous Mint",
|
||||
Subtitle = "Litora luctus magnis arcu lorem morbi blandit faucibus mattis commodo hac habitant inceptos conubia cubilia nulla mauris diam proin augue eget dolor mollis interdum lobortis",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Mint.png",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Gelato",
|
||||
Description = "Vestibulum vestibulum magna scelerisque ultrices consectetuer vehicula rhoncus pellentesque massa adipiscing platea primis sodales parturient metus sollicitudin morbi vestibulum pellentesque consectetuer pellentesque volutpat rutrum sollicitudin sapien pellentesque vestibulum venenatis consectetuer viverra est aliquam semper hac maecenas integer adipiscing sociis vulputate ullamcorper curabitur pellentesque parturient praesent neque sollicitudin pellentesque vestibulum suspendisse consectetuer leo quisque phasellus pede vestibulum quam pellentesque sollicitudin quis mus adipiscing parturient pellentesque vestibulum",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Creamy Orange",
|
||||
Subtitle = "Leo mus nec nascetur dapibus non fames per felis ipsum pharetra egestas montes elit nostra placerat euismod enim justo ornare feugiat platea pulvinar sed sagittis",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Orange.png",
|
||||
Link = "http://www.alpineskihouse.com/",
|
||||
Category = "Sorbet",
|
||||
Description = "Consequat condimentum consectetuer vivamus urna vestibulum netus pellentesque cras nec taciti non scelerisque adipiscing parturient tellus sollicitudin per vestibulum pellentesque aliquam convallis ullamcorper nulla porta aliquet accumsan suspendisse duis bibendum nunc condimentum consectetuer pellentesque scelerisque tempor sed dictumst eleifend amet vestibulum sem tempus facilisi ullamcorper adipiscing tortor ante purus parturient sit dignissim vel nam turpis sed sollicitudin elementum arcu vestibulum risus blandit suspendisse faucibus pellentesque commodo dis condimentum consectetuer varius aenean conubia cubilia facilisis velit mauris nullam aptent dapibus habitant",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Succulent Strawberry",
|
||||
Subtitle = "Senectus sem lacus erat sociosqu eros suscipit primis nibh nisi nisl gravida torquent",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png",
|
||||
Link = "http://www.baldwinmuseumofscience.com/",
|
||||
Category = "Sorbet",
|
||||
Description = "Est auctor inceptos congue interdum egestas scelerisque pellentesque fermentum ullamcorper cursus dictum lectus suspendisse condimentum libero vitae vestibulum lobortis ligula fringilla euismod class scelerisque feugiat habitasse diam litora adipiscing sollicitudin parturient hendrerit curae himenaeos imperdiet ullamcorper suspendisse nascetur hac gravida pharetra eget donec leo mus nec non malesuada vestibulum pellentesque elit penatibus vestibulum per condimentum porttitor sed adipiscing scelerisque ullamcorper etiam iaculis enim tincidunt erat parturient sem vestibulum eros",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Very Vanilla",
|
||||
Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Vanilla.png",
|
||||
Link = "http://www.blueyonderairlines.com/",
|
||||
Category = "Ice Cream",
|
||||
Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Creamy Caramel Frozen Yogurt",
|
||||
Subtitle = "Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60SauceCaramel.png",
|
||||
Link = "http://www.adatum.com/",
|
||||
Category = "Low-fat frozen yogurt",
|
||||
Description = "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Chocolate Lovers Frozen Yogurt",
|
||||
Subtitle = "Quisque vivamus bibendum cursus dictum dictumst dis aliquam aliquet etiam lectus eleifend fusce libero ante facilisi ligula est",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60SauceChocolate.png",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Low-fat frozen yogurt",
|
||||
Description = "Enim cursus nascetur dictum habitasse hendrerit nec gravida vestibulum pellentesque vestibulum adipiscing iaculis erat consectetuer pellentesque parturient lacinia himenaeos pharetra condimentum non sollicitudin eros dolor vestibulum per lectus pellentesque nibh imperdiet laoreet consectetuer placerat libero malesuada pellentesque fames penatibus ligula scelerisque litora nisi luctus vestibulum nisl ullamcorper sed sem natoque suspendisse felis sit condimentum pulvinar nunc posuere magnis vel scelerisque sagittis porttitor potenti tincidunt mattis ipsum adipiscing sollicitudin parturient mauris nam senectus ullamcorper mollis tristique sociosqu suspendisse ultricies montes sed condimentum dis nostra suscipit justo ornare pretium odio pellentesque lacus lorem torquent orci",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Roma Strawberry",
|
||||
Subtitle = "Litora luctus magnis arcu lorem morbi blandit faucibus mattis commodo hac habitant inceptos conubia cubilia nulla mauris diam proin augue eget dolor mollis interdum lobortis",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Gelato",
|
||||
Description = "Vestibulum vestibulum magna scelerisque ultrices consectetuer vehicula rhoncus pellentesque massa adipiscing platea primis sodales parturient metus sollicitudin morbi vestibulum pellentesque consectetuer pellentesque volutpat rutrum sollicitudin sapien pellentesque vestibulum venenatis consectetuer viverra est aliquam semper hac maecenas integer adipiscing sociis vulputate ullamcorper curabitur pellentesque parturient praesent neque sollicitudin pellentesque vestibulum suspendisse consectetuer leo quisque phasellus pede vestibulum quam pellentesque sollicitudin quis mus adipiscing parturient pellentesque vestibulum",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Italian Rainbow",
|
||||
Subtitle = "Leo mus nec nascetur dapibus non fames per felis ipsum pharetra egestas montes elit nostra placerat euismod enim justo ornare feugiat platea pulvinar sed sagittis",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60SprinklesRainbow.png",
|
||||
Link = "http://www.alpineskihouse.com/",
|
||||
Category = "Gelato",
|
||||
Description = "Consequat condimentum consectetuer vivamus urna vestibulum netus pellentesque cras nec taciti non scelerisque adipiscing parturient tellus sollicitudin per vestibulum pellentesque aliquam convallis ullamcorper nulla porta aliquet accumsan suspendisse duis bibendum nunc condimentum consectetuer pellentesque scelerisque tempor sed dictumst eleifend amet vestibulum sem tempus facilisi ullamcorper adipiscing tortor ante purus parturient sit dignissim vel nam turpis sed sollicitudin elementum arcu vestibulum risus blandit suspendisse faucibus pellentesque commodo dis condimentum consectetuer varius aenean conubia cubilia facilisis velit mauris nullam aptent dapibus habitant",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Strawberry",
|
||||
Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png",
|
||||
Link = "http://www.blueyonderairlines.com/",
|
||||
Category = "Ice Cream",
|
||||
Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Strawberry Frozen Yogurt",
|
||||
Subtitle = "Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png",
|
||||
Link = "http://www.adatum.com/",
|
||||
Category = "Low-fat frozen yogurt",
|
||||
Description = "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Bongo Banana",
|
||||
Subtitle = "Quisque vivamus bibendum cursus dictum dictumst dis aliquam aliquet etiam lectus eleifend fusce libero ante facilisi ligula est",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Banana.png",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Sorbet",
|
||||
Description = "Enim cursus nascetur dictum habitasse hendrerit nec gravida vestibulum pellentesque vestibulum adipiscing iaculis erat consectetuer pellentesque parturient lacinia himenaeos pharetra condimentum non sollicitudin eros dolor vestibulum per lectus pellentesque nibh imperdiet laoreet consectetuer placerat libero malesuada pellentesque fames penatibus ligula scelerisque litora nisi luctus vestibulum nisl ullamcorper sed sem natoque suspendisse felis sit condimentum pulvinar nunc posuere magnis vel scelerisque sagittis porttitor potenti tincidunt mattis ipsum adipiscing sollicitudin parturient mauris nam senectus ullamcorper mollis tristique sociosqu suspendisse ultricies montes sed condimentum dis nostra suscipit justo ornare pretium odio pellentesque lacus lorem torquent orci",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Firenze Vanilla",
|
||||
Subtitle = "Litora luctus magnis arcu lorem morbi blandit faucibus mattis commodo hac habitant inceptos conubia cubilia nulla mauris diam proin augue eget dolor mollis interdum lobortis",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60Vanilla.png",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Gelato",
|
||||
Description = "Vestibulum vestibulum magna scelerisque ultrices consectetuer vehicula rhoncus pellentesque massa adipiscing platea primis sodales parturient metus sollicitudin morbi vestibulum pellentesque consectetuer pellentesque volutpat rutrum sollicitudin sapien pellentesque vestibulum venenatis consectetuer viverra est aliquam semper hac maecenas integer adipiscing sociis vulputate ullamcorper curabitur pellentesque parturient praesent neque sollicitudin pellentesque vestibulum suspendisse consectetuer leo quisque phasellus pede vestibulum quam pellentesque sollicitudin quis mus adipiscing parturient pellentesque vestibulum",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Choco-wocko",
|
||||
Subtitle = "Leo mus nec nascetur dapibus non fames per felis ipsum pharetra egestas montes elit nostra placerat euismod enim justo ornare feugiat platea pulvinar sed sagittis",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60SauceChocolate.png",
|
||||
Link = "http://www.alpineskihouse.com/",
|
||||
Category = "Sorbet",
|
||||
Description = "Consequat condimentum consectetuer vivamus urna vestibulum netus pellentesque cras nec taciti non scelerisque adipiscing parturient tellus sollicitudin per vestibulum pellentesque aliquam convallis ullamcorper nulla porta aliquet accumsan suspendisse duis bibendum nunc condimentum consectetuer pellentesque scelerisque tempor sed dictumst eleifend amet vestibulum sem tempus facilisi ullamcorper adipiscing tortor ante purus parturient sit dignissim vel nam turpis sed sollicitudin elementum arcu vestibulum risus blandit suspendisse faucibus pellentesque commodo dis condimentum consectetuer varius aenean conubia cubilia facilisis velit mauris nullam aptent dapibus habitant",
|
||||
|
||||
});
|
||||
|
||||
data.Add(new DessertModel
|
||||
{
|
||||
Title = "Chocolate",
|
||||
Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est",
|
||||
Picture = "ms-appx:///MasterDetailPage/Images/60SauceChocolate.png",
|
||||
Link = "http://www.blueyonderairlines.com/",
|
||||
Category = "Ice Cream",
|
||||
Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac",
|
||||
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
}
|
До Ширина: | Высота: | Размер: 1.8 KiB |
Двоичные данные
templates/Pages/MasterDetail/MasterDetailPage/Images/60Lemon.png
До Ширина: | Высота: | Размер: 2.6 KiB |
Двоичные данные
templates/Pages/MasterDetail/MasterDetailPage/Images/60Mint.png
До Ширина: | Высота: | Размер: 2.6 KiB |
До Ширина: | Высота: | Размер: 2.6 KiB |
До Ширина: | Высота: | Размер: 2.1 KiB |
До Ширина: | Высота: | Размер: 2.1 KiB |
До Ширина: | Высота: | Размер: 2.2 KiB |
До Ширина: | Высота: | Размер: 4.5 KiB |
До Ширина: | Высота: | Размер: 5.3 KiB |
До Ширина: | Высота: | Размер: 3.8 KiB |
До Ширина: | Высота: | Размер: 2.3 KiB |
До Ширина: | Высота: | Размер: 3.2 KiB |
|
@ -6,6 +6,7 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
|
||||
xmlns:i="using:Microsoft.Xaml.Interactivity"
|
||||
Loaded="OnLoaded"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Page.Resources>
|
||||
|
@ -16,98 +17,69 @@
|
|||
<Thickness x:Key="MediumTopMargin">0,8,0,0</Thickness>
|
||||
<Thickness x:Key="SmallTopMargin">0,4,0,0</Thickness>
|
||||
|
||||
<Thickness x:Key="ListItemMargin">12</Thickness>
|
||||
<Thickness x:Key="ListTextMargin">12,-9,0,0</Thickness>
|
||||
|
||||
<Style TargetType="Image" x:Key="ThumbnailStyle">
|
||||
<Setter Property="Width" Value="80"/>
|
||||
<Setter Property="Height" Value="80"/>
|
||||
<Setter Property="Stretch" Value="UniformToFill"/>
|
||||
</Style>
|
||||
<Thickness x:Key="ListItemMargin">8</Thickness>
|
||||
</Page.Resources>
|
||||
|
||||
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup>
|
||||
<VisualState>
|
||||
<VisualStateGroup x:Name="visualStateGroup" CurrentStateChanged="OnWindowStateChanged">
|
||||
<VisualState x:Name="NarrowState">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowWidth="0"/>
|
||||
<AdaptiveTrigger MinWindowWidth="0" />
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="cd0.Width" Value="*"/>
|
||||
<Setter Target="cd1.Width" Value="0"/>
|
||||
<Setter Target="detailGrid.(Grid.Column)" Value="0"/>
|
||||
<Setter Target="cd0.Width" Value="*" />
|
||||
<Setter Target="cd1.Width" Value="0" />
|
||||
<Setter Target="detailGrid.(Grid.Column)" Value="0" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState>
|
||||
<VisualState x:Name="DefaultState">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowWidth="900"/>
|
||||
<AdaptiveTrigger MinWindowWidth="640" />
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="cd0.Width" Value="Auto"/>
|
||||
<Setter Target="cd1.Width" Value="*"/>
|
||||
<Setter Target="detailGrid.(Grid.Column)" Value="1"/>
|
||||
<Setter Target="cd0.Width" Value="296" />
|
||||
<Setter Target="cd1.Width" Value="*" />
|
||||
<Setter Target="detailGrid.(Grid.Column)" Value="1" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<i:Interaction.Behaviors>
|
||||
<core:EventTriggerBehavior EventName="Loaded">
|
||||
<core:InvokeCommandAction Command="{Binding LoadDataCommand}"/>
|
||||
</core:EventTriggerBehavior>
|
||||
</i:Interaction.Behaviors>
|
||||
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition x:Name="cd0" />
|
||||
<ColumnDefinition x:Name="cd1" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0" x:Uid="MasterDetailPage_Title" Margin="{StaticResource PageHeaderMargin}" Style="{ThemeResource HeaderTextBlockStyle}"/>
|
||||
<TextBlock Grid.Row="0" x:Uid="MasterDetailPage_Title" Margin="{StaticResource PageHeaderMargin}" Style="{ThemeResource HeaderTextBlockStyle}" />
|
||||
<Grid Visibility="{Binding MasterVisibility}" Grid.Row="1">
|
||||
<ListView ItemsSource="{Binding DessertList}" SelectionMode="Single" IsItemClickEnabled="True" SelectedItem="{Binding Selected}">
|
||||
<ListView ItemsSource="{Binding SampleItems}" SelectionMode="Single" IsItemClickEnabled="True" SelectedItem="{Binding Selected}">
|
||||
<i:Interaction.Behaviors>
|
||||
<core:EventTriggerBehavior EventName="ItemClick">
|
||||
<core:InvokeCommandAction Command="{Binding ItemClickCommand}"/>
|
||||
<core:InvokeCommandAction Command="{Binding ItemClickCommand}" />
|
||||
</core:EventTriggerBehavior>
|
||||
</i:Interaction.Behaviors>
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Margin="{StaticResource ListItemMargin}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image Grid.Column="0" Source="{Binding Picture}" Style="{StaticResource ThumbnailStyle}" />
|
||||
<StackPanel Grid.Column="1" Margin="{StaticResource ListTextMargin}">
|
||||
<TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextBlockStyle}" />
|
||||
<TextBlock Text="{Binding Category}" Style="{StaticResource SubtitleTextBlockStyle}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<StackPanel Margin="{StaticResource ListItemMargin}">
|
||||
<TextBlock Text="{Binding Title}" Style="{StaticResource SubtitleTextBlockStyle}" />
|
||||
<TextBlock Text="{Binding Category}" Style="{StaticResource BodyTextBlockStyle}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
</Grid>
|
||||
|
||||
<ScrollViewer Grid.Row="1" x:Name="detailGrid" Visibility="{Binding DetailVisibility}">
|
||||
<StackPanel Margin="{StaticResource ContainerMargin}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image Grid.Column="0" Source="{Binding Selected.Picture}" Style="{StaticResource ThumbnailStyle}" />
|
||||
<StackPanel Grid.Column="1" Margin="{StaticResource ListTextMargin}">
|
||||
<TextBlock Text="{Binding Selected.Title}" Style="{StaticResource TitleTextBlockStyle}" />
|
||||
<TextBlock Text="{Binding Selected.Category}" Style="{StaticResource SubtitleTextBlockStyle}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<TextBlock Text="{Binding Selected.Subtitle}" Margin="{StaticResource MediumTopMargin}" Style="{StaticResource SubtitleTextBlockStyle}"/>
|
||||
<TextBlock Text="{Binding Selected.Description}" Margin="{StaticResource SmallTopMargin}" Style="{StaticResource BodyTextBlockStyle}"/>
|
||||
<StackPanel Margin="{StaticResource ContainerMargin}">
|
||||
<TextBlock Text="{Binding Selected.Title}" Style="{StaticResource TitleTextBlockStyle}" />
|
||||
<TextBlock Text="{Binding Selected.Category}" Style="{StaticResource SubtitleTextBlockStyle}" />
|
||||
<TextBlock Text="{Binding Selected.Subtitle}" Margin="{StaticResource MediumTopMargin}" Style="{StaticResource SubtitleTextBlockStyle}" />
|
||||
<TextBlock Text="{Binding Selected.Description}" Margin="{StaticResource SmallTopMargin}" Style="{StaticResource BodyTextBlockStyle}" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
|
||||
namespace ItemNamespace.MasterDetailPage
|
||||
|
@ -8,5 +9,15 @@ namespace ItemNamespace.MasterDetailPage
|
|||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
private void OnWindowStateChanged(object sender, VisualStateChangedEventArgs e)
|
||||
{
|
||||
ViewModel.UpdateWindowState(e);
|
||||
}
|
||||
|
||||
private async void OnLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
await ViewModel.LoadDataAsync(visualStateGroup.CurrentState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,9 +11,10 @@ namespace ItemNamespace.MasterDetailPage
|
|||
{
|
||||
public class MasterDetailPageViewModel : System.ComponentModel.INotifyPropertyChanged
|
||||
{
|
||||
const double UseNavigationWithRequested = 900;
|
||||
const string NarrowStateName = "NarrowState";
|
||||
const string DefaultStateName = "DefaultState";
|
||||
|
||||
private bool _useNavigation;
|
||||
private VisualState _currentState;
|
||||
|
||||
private Visibility _masterVisibility;
|
||||
public Visibility MasterVisibility
|
||||
|
@ -29,68 +30,58 @@ namespace ItemNamespace.MasterDetailPage
|
|||
set { Set(ref _detailVisibility, value); }
|
||||
}
|
||||
|
||||
private DessertModel _selected;
|
||||
public DessertModel Selected
|
||||
private SampleModel _selected;
|
||||
public SampleModel Selected
|
||||
{
|
||||
get { return _selected; }
|
||||
set { Set(ref _selected, value); }
|
||||
}
|
||||
|
||||
public ICommand LoadDataCommand { get; private set; }
|
||||
|
||||
public ICommand ItemClickCommand { get; private set; }
|
||||
|
||||
public ObservableCollection<DessertModel> DessertList { get; private set; } = new ObservableCollection<DessertModel>();
|
||||
public ObservableCollection<SampleModel> SampleItems { get; private set; } = new ObservableCollection<SampleModel>();
|
||||
|
||||
public MasterDetailPageViewModel()
|
||||
{
|
||||
this._useNavigation = Window.Current.Bounds.Width < UseNavigationWithRequested;
|
||||
LoadDataCommand = new RelayCommand(async () => { await LoadDataAsync(); });
|
||||
ItemClickCommand = new RelayCommand<ItemClickEventArgs>(OnItemClick);
|
||||
Window.Current.SizeChanged += OnWindowSizeChanged;
|
||||
SetGoBack();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnWindowSizeChanged(object sender, WindowSizeChangedEventArgs e)
|
||||
public async Task LoadDataAsync(VisualState currentState)
|
||||
{
|
||||
var newWidth = e.Size.Width;
|
||||
if (!this._useNavigation && newWidth < UseNavigationWithRequested)
|
||||
{
|
||||
//Enter on navigation master detail
|
||||
this.MasterVisibility = Visibility.Visible;
|
||||
this.DetailVisibility = Visibility.Collapsed;
|
||||
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
|
||||
}
|
||||
else if (this._useNavigation && newWidth >= UseNavigationWithRequested)
|
||||
{
|
||||
//Enter on full screen master detail
|
||||
this.MasterVisibility = Visibility.Visible;
|
||||
this.DetailVisibility = Visibility.Visible;
|
||||
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
|
||||
}
|
||||
this._useNavigation = newWidth < UseNavigationWithRequested;
|
||||
}
|
||||
_currentState = currentState;
|
||||
SampleItems.Clear();
|
||||
|
||||
private async Task LoadDataAsync()
|
||||
{
|
||||
this.DessertList.Clear();
|
||||
|
||||
var service = new DessertService();
|
||||
var service = new SampleModelService();
|
||||
var data = await service.GetDataAsync();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
this.DessertList.Add(item);
|
||||
SampleItems.Add(item);
|
||||
}
|
||||
if (Window.Current.Bounds.Width >= UseNavigationWithRequested)
|
||||
Selected = SampleItems.First();
|
||||
NavigateToDetail();
|
||||
}
|
||||
|
||||
public void UpdateWindowState(VisualStateChangedEventArgs args)
|
||||
{
|
||||
_currentState = args.NewState;
|
||||
if (args.OldState.Name == NarrowStateName && args.NewState.Name == DefaultStateName)
|
||||
{
|
||||
Selected = DessertList.First();
|
||||
NavigateToDetail();
|
||||
MasterVisibility = Visibility.Visible;
|
||||
DetailVisibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
MasterVisibility = Visibility.Visible;
|
||||
DetailVisibility = Visibility.Collapsed;
|
||||
}
|
||||
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
|
||||
}
|
||||
|
||||
private void OnItemClick(ItemClickEventArgs args)
|
||||
{
|
||||
DessertModel item = args?.ClickedItem as DessertModel;
|
||||
SampleModel item = args?.ClickedItem as SampleModel;
|
||||
if (item != null)
|
||||
{
|
||||
Selected = item;
|
||||
|
@ -100,10 +91,10 @@ namespace ItemNamespace.MasterDetailPage
|
|||
|
||||
private void NavigateToDetail()
|
||||
{
|
||||
this.DetailVisibility = Visibility.Visible;
|
||||
if (this._useNavigation)
|
||||
DetailVisibility = Visibility.Visible;
|
||||
if (_currentState.Name == NarrowStateName)
|
||||
{
|
||||
this.MasterVisibility = Visibility.Collapsed;
|
||||
MasterVisibility = Visibility.Collapsed;
|
||||
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
|
||||
}
|
||||
}
|
||||
|
@ -116,8 +107,8 @@ namespace ItemNamespace.MasterDetailPage
|
|||
{
|
||||
if (DetailVisibility == Visibility.Visible)
|
||||
{
|
||||
this.MasterVisibility = Visibility.Visible;
|
||||
this.DetailVisibility = Visibility.Collapsed;
|
||||
MasterVisibility = Visibility.Visible;
|
||||
DetailVisibility = Visibility.Collapsed;
|
||||
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
|
||||
e.Handled = true;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
namespace ItemNamespace.MasterDetailPage
|
||||
{
|
||||
public class DessertModel
|
||||
public class SampleModel
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public string Category { get; set; }
|
||||
public string Picture { get; set; }
|
||||
public string Subtitle { get; set; }
|
||||
public string Link { get; set; }
|
||||
public string Description { get; set; }
|
|
@ -0,0 +1,35 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ItemNamespace.MasterDetailPage
|
||||
{
|
||||
public class SampleModelService
|
||||
{
|
||||
public async Task<IEnumerable<SampleModel>> GetDataAsync()
|
||||
{
|
||||
await Task.Delay(0);
|
||||
|
||||
var data = new List<SampleModel>();
|
||||
|
||||
data.Add(new SampleModel
|
||||
{
|
||||
Title = "Lorem ipsum dolor sit amet",
|
||||
Subtitle = "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua",
|
||||
Link = "http://www.adatum.com/",
|
||||
Category = "Consectetur Adipiscing",
|
||||
Description = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus",
|
||||
});
|
||||
|
||||
data.Add(new SampleModel
|
||||
{
|
||||
Title = "Sed ut perspiciatis unde",
|
||||
Subtitle = "Sit voluptatem accusantium doloremque laudantium, totam rem aperiam",
|
||||
Link = "http://www.adventure-works.com/",
|
||||
Category = "Iste Natus",
|
||||
Description = "Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?. omnis voluptas assumenda est, omnis dolor repellendus",
|
||||
|
||||
});
|
||||
return data;
|
||||
}
|
||||
}
|
||||
}
|