Пример #1
0
        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}");
        }
Пример #2
0
        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);
        }
Пример #3
0
 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());
 }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
            }
        }