void WriteFiles() { var writing = Stopwatch.StartNew(); var dataUpdate = new UpdatePackage("data"); var jsout = new JsOutput(dataUpdate); jsout.Write(); // Has to be after everything else because partials are modified here. var searchUpdate = new UpdatePackage("search"); var sqlout = new SearchOutput(jsout, searchUpdate); sqlout.Write(); if (dataUpdate.RowCount > 0) { DatabaseBuilder.PrintLine($"Updating {dataUpdate.RowCount} data rows."); dataUpdate.Write(); } if (searchUpdate.RowCount > 0) { DatabaseBuilder.PrintLine($"Updating {searchUpdate.RowCount} data rows."); searchUpdate.Write(); } writing.Stop(); DatabaseBuilder.PrintLine($"Writing elapsed: {writing.Elapsed}"); }
private void Button_Click(object sender, RoutedEventArgs e) { string result = host.runScript(JsInput.Text); JsOutput.Text = JsOutput.Text + "\n> " + JsInput.Text + "\n" + result; JsOutput.UpdateLayout(); JsOutputScroll.ChangeView(null, double.MaxValue, null); }
private void Button_Click(object sender, RoutedEventArgs e) { host.NKevaluateJavaScript(JsInput.Text).ContinueWith(task => { JsOutput.Text = JsOutput.Text + "\n> " + JsInput.Text + "\n" + task.Result; JsOutput.UpdateLayout(); JsOutputScroll.ChangeView(null, double.MaxValue, null); }, TaskScheduler.FromCurrentSynchronizationContext()); }
void ExportFileZip() { var update = new UpdatePackage("archive") { IncludeAll = true }; var jsout = new JsOutput(update); jsout.Write(); var zip = new Ionic.Zip.ZipFile("export.zip"); zip.UseZip64WhenSaving = Ionic.Zip.Zip64Option.Always; foreach (var row in update.OrderedRows().OfType<DataJsonRow>()) { var path = $"{row.Lang}\\{row.Type}\\{row.Id}.json"; zip.AddEntry(path, row.Json, Encoding.UTF8); } zip.Save(); }
static JObject GetPartial(JsOutput jsout, string type, string lang, string id) { var partial = jsout.GetPartialOrNull(type, lang, id.ToString()); if (partial == null) { return(null); } if (type == "item") { // Stupid hack - need to ensure all item keys are strings to remove! if (int.TryParse(id, out var idNum)) { partial["g"] = GarlandDatabase.Instance.ItemsById[idNum].patchCategory; } else { partial["g"] = GarlandDatabase.Instance.ItemsById[id].patchCategory; } } return(partial); }
public static void WritePatchLists(JsOutput jsout, UpdatePackage update, string lang) { //if (!_patchesChanged) // return; foreach (var majorPatch in GarlandDatabase.MajorPatches) { var majorPatchEnd = majorPatch.id + .1m; // Collect data. var idsByTypeByPatch = new Dictionary <decimal, Dictionary <string, List <string> > >(); foreach (var typePair in _patchesByIdByType) { foreach (var idPair in typePair.Value) { if (idPair.Value < majorPatch.id || idPair.Value >= majorPatchEnd) { continue; } if (!idsByTypeByPatch.TryGetValue(idPair.Value, out var idsByType)) { idsByType = new Dictionary <string, List <string> >(); idsByTypeByPatch[idPair.Value] = idsByType; } if (!idsByType.TryGetValue(typePair.Key, out var ids)) { ids = new List <string>(); idsByType[typePair.Key] = ids; } ids.Add(idPair.Key); } } // Write it out. dynamic root = new JObject(); root.patch = new JObject(); root.patch.id = majorPatch.id.ToString("0.0", new CultureInfo("en-US", false)); root.patch.name = majorPatch.name; root.patch.series = majorPatch.series; var patches = new JObject(); root.patch.patches = patches; foreach (var patchPair in idsByTypeByPatch) { var patch = new JObject(); foreach (var typePair in patchPair.Value) { var list = new JArray(); foreach (var id in typePair.Value) { var partial = GetPartial(jsout, typePair.Key, lang, id); if (partial != null) { list.Add(partial); } } patch[typePair.Key] = list; } var patchKey = patchPair.Key; var patchKeyStr = Math.Floor(patchKey) == patchKey?patchPair.Key.ToString("0.0", new CultureInfo("en-US", false)) : patchPair.Key.ToString(); patches[patchKeyStr] = patch; } var contents = JsonConvert.SerializeObject(root); update.IncludeDocument(majorPatch.id.ToString("0.0", new CultureInfo("en-US", false)), "patch", lang, 2, contents); } }